package com.team.abs.service.check;

import com.team.abs.entity.simple_user;

//用于身份证的检查
public class check {
	
	public  static String check(simple_user user) {
		String res="";
		if(!checkUid(user.getUser_uid()))res+="身份证有误/n";
		if(!checkName(user.getUser_name()))res+="输入名字有误/n";
		if(!checkTel(user.getUser_tel()))res+="输入电话有误/n";
		
		if(!checkQQ(user.getUser_qq()))res+="输入QQ有误/n";
		if(!checkSchool_ID(user.getUser_school_id()))res+="输入学号有误/n";
		return res;
		
	}
	/*最后一位校验码的计算方法
	首先将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为：7－9－10－5－8－4－2－1－6－3－7－9－10－5－8－4－2
	接下来将这17位数字和系数相乘的结果相加
	然后用加出来和除以11，看余数，余数只可能有0－1－2－3－4－5－6－7－8－9－10这11个数字。
	其分别对应的最后一位身份证的号码为1－0－X －9－8－7－6－5－4－3－2。
	通过上述方法可以计算一个人的身份证号是否合法。*/
	public static boolean checkUid(String Uid) {
		if(Uid.length()!=18) {
			System.out.println("UID!=18");
			return false;}
		for(int i=0;i<Uid.length()-1;i++)
			if(Uid.charAt(i)>'9'||Uid.charAt(i)<'0')
				{System.out.println("UID");return false;}
		int count=0;
		
		count=(Uid.charAt(0)-'0')*7+(Uid.charAt(1)-'0')*9+(Uid.charAt(2)-'0')*10+(Uid.charAt(3)-'0')*5+
				(Uid.charAt(4)-'0')*8+(Uid.charAt(5)-'0')*4+(Uid.charAt(6)-'0')*2+(Uid.charAt(7)-'0')*1+
				(Uid.charAt(8)-'0')*6+(Uid.charAt(9)-'0')*3+(Uid.charAt(10)-'0')*7+(Uid.charAt(11)-'0')*9+
				(Uid.charAt(12)-'0')*10+(Uid.charAt(13)-'0')*5+(Uid.charAt(14)-'0')*8+(Uid.charAt(15)-'0')*4+(Uid.charAt(16)-'0')*2;
		count%=11;
		//System.out.println(count);
		switch(count) {
		case 0 :return (Uid.charAt(17)-'0')==1;
		case 1 :return (Uid.charAt(17)-'0')==0;
		case 2 :return (Uid.charAt(17))=='X';
		default :return (Uid.charAt(17)-'0')+count==12;
		}
		
	}
	public static boolean checkName(String Name) {
		if(Name.length()==0||Name.length()>8) {System.out.println("name");return false;}
		return true;
	}
	
	public static boolean checkTel(String Tel) {
		if(Tel.length()!=11) {System.out.println("tel");return false;}
		for(char c:Tel.toCharArray())
			if(c>'9'||c<'0') {System.out.println("tel");return false;}
		return true;
	}
	public static boolean checkSchool_ID(String School_id) {
		for(char c:School_id.toCharArray())
			if(c>'9'||c<'0') {System.out.println("School_id");return false;}
		return true;
	}
	public static boolean checkQQ(String QQ) {
		for(char c:QQ.toCharArray())
			if(c>'9'||c<'0') {System.out.println("QQ");return false;}
		return true;
	}
	public static void main(String args[]) {
	System.out.println(checkUid("33102119990220277X"));
	}
}
